Managing a display

ABSTRACT

A system and computer implemented method for managing a display for a software application is disclosed. The software application may have a set of portions. The method can include collecting, for a first portion and a second portion of the set of portions, optical tracking information including a set of viewing coordinates having a temporal feature. The method can also include determining, based on the optical tracking information including the set of viewing coordinates having the temporal feature, a set of viewing scores including a first group of viewing scores and a second group of viewing scores. The method can also include generating a frustum having a set of regions. The set of regions can include a first region, to provide the first portion, based on the first group of viewing scores, and a second region, to provide the second portion, based on the second group of viewing scores.

BACKGROUND

Aspects of the present disclosure, in certain embodiments, are directedtoward a method for a computer system. More particular aspects relate tomanaging windows of software application.

Three-dimensional (3D) display technology is an emerging trend in thepersonal computing and entertainment industry. Eye tracking is anotherrecent technique that can be leveraged to provide benefits in the realmof display technology. Together, 3D display technology and eye trackingtechniques may be used to provide benefits for personal computing andentertainment.

SUMMARY

Aspects of the present disclosure, in certain embodiments, are directedtoward a method and system for managing a display for a softwareapplication. The software application may have a set of portions. Incertain embodiments, the method can include collecting, for a firstportion of the set of portions and a second portion of the set ofportions, optical tracking information including a set of viewingcoordinates having a temporal feature. In certain embodiments, themethod can also include determining, based on the optical trackinginformation including the set of viewing coordinates having the temporalfeature, a set of viewing scores including a first group of viewingscores and a second group of viewing scores. Additionally, in certainembodiments, the method can also include generating a frustum having aset of regions. The set of regions can include a first region, toprovide the first portion, based on the first group of viewing scores,and a second region, to provide the second portion, based on the secondgroup of viewing scores.

The above summary is not intended to describe each illustratedembodiment or every implementation of the present disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

The drawings included in the present application are incorporated into,and form part of, the specification. They illustrate embodiments of thepresent disclosure and, along with the description, serve to explain theprinciples of the disclosure. The drawings are only illustrative ofcertain embodiments and do not limit the disclosure.

FIG. 1A is an example of a frustum for managing windows of a 3D display,according to embodiments of the present disclosure;

FIG. 1B is an example frustum for managing windows of a 3D display,according to embodiments of the present disclosure;

FIG. 2 is a flowchart of a method for managing a display, according toembodiments of the present disclosure;

FIG. 3A is an example viewing frustum provided in a display, accordingto embodiments of the present disclosure;

FIG. 3B is an example viewing frustum provided in a display, accordingto embodiments of the present disclosure;

FIG. 4 is an example viewing frustum provided in a display, according toembodiments of the present disclosure;

FIG. 5 is an example display including two viewing frustums, accordingto embodiments of the present disclosure;

FIG. 6 illustrates an example multi-dimensional array, according toembodiments of the present disclosure;

FIG. 7 depicts a high-level block diagram of a computer system forimplementing various embodiments, according to embodiments of thepresent disclosure; and

FIG. 8 illustrates an example cone frustum for managing softwareapplications of a 3D display, according to embodiments of the presentdisclosure.

While the invention is amenable to various modifications and alternativeforms, specifics thereof have been shown by way of example in thedrawings and will be described in detail. It should be understood,however, that the intention is not to limit the invention to theparticular embodiments described. On the contrary, the intention is tocover all modifications, equivalents, and alternatives falling withinthe spirit and scope of the invention.

DETAILED DESCRIPTION

Aspects of the present disclosure, in certain embodiments, are directedtoward a method for managing a display. More particular aspects relateto generating a frustum for managing software application windows in athree-dimensional (3D) display. In certain embodiments, the method caninclude collecting optical tracking information for a first portion anda second portion of the. The optical tracking information can include aset of viewing coordinates having a temporal feature (e.g., a viewingfrequency or gaze duration). In certain embodiments, the method mayinclude determining a set of viewing scores for the set of portions ofthe software application. Determining the set of viewing scores for theset of portions of the software application may be based on the set ofviewing coordinates having the temporal feature. Additionally, incertain embodiments, the method can also include generating a frustumhaving a set of regions. The set of regions can include a first region,to provide the first portion, based on the first group of viewingscores, and a second region, to provide the second portion, based on thesecond group of viewing scores.

When using a computer, switching from one application to another hasbecome a frequent part of the user experience. Users are increasinglyengaged in multiple simultaneous tasks on their computers, and may havea large number of windows open at one time. Aspects of the presentdisclosure relate to the recognition that, as the computer display is ofa limited size, users may frequently minimize, toggle, and rearrangewindows to view the desired content. Accordingly, aspects of the presentdisclosure, in certain embodiments, are directed toward a method andsystem to facilitate management of the windows of a display byleveraging eye-tracking techniques and 3D display technology. Moreparticularly, the present disclosure relates to collecting eye-trackinginformation from a user to identify which areas (e.g., portions) of asoftware application are frequently viewed, and generating athree-dimensional frustum in which to display the frequently viewedareas. By making use of 3D display technology, the available space inwhich to provide the three-dimensional frustum, and therefore the user'sdesired content, may increase. Accordingly, aspects of the presentdisclosure may provide benefits associated with ease of use andefficiency.

Aspects of the present disclosure relate to a system and method forgenerating a frustum to manage windows of a software application in athree-dimensional (3D) display. The method and system may work on anumber of devices and operating systems. The software application mayhave a set of portions (e.g., GUI windows or portions of windows). Themethod and system can include collecting optical tracking informationfor a first portion and a second portion of the set of portions. Theoptical tracking information can include a set of viewing coordinateshaving a temporal feature. The viewing coordinates may, for example,represent points of the display at which a user was looking. Thetemporal feature may, for example, include a viewing frequency and agaze duration.

Aspects of the present disclosure can include determining a set ofviewing scores for the set of portions of the software application. Theset of viewing scores may include a first group of viewing scores and asecond group of viewing scores. Determining the set of viewing scoresfor the set of portions of the software application can be based on theset of viewing coordinates having the temporal feature. Determining theset of viewing scores for the set of portions of the softwareapplication can further include identifying a first fixation of the setof viewing coordinates. The method may then weight the first fixationand the set of viewing coordinates based on the viewing frequency andthe gaze duration. Further, the method can include assigning a viewingscore of a set of viewing scores to a portion of the set of portions.

Aspects of the present disclosure can include generating a frustumhaving a set of regions to provide the first portion and the secondportion of the set of portions. The first region may provide the firstportion of the set of portions based on the first group of the set ofviewing scores. The second region may provide the second portion of theset of portions based on the second group of the set of viewing scores.The first region of the set of regions may be a primary viewing area ofthe frustum. Additionally, the first group of the set of viewing scoresmay be greater than the second group of the set of viewing scores.Aspects of the present disclosure can also include computing, for thesecond portion, a z-plane display angle based on at least the oneviewing score of the second group of the set of viewing scores, andgenerating the frustum using the z-plane display angle. The z-planedisplay angle can be inversely proportional to the at least one viewingscore of the second group of the set of viewing scores.

The frustum may, in certain embodiments, include a first base and fourperipheral sides. The first base of the frustum may be of the firstregion of the frustum and the four peripheral sides may be the secondregion of the frustum. The angle between a side of the four peripheralsides and the first base may be based on the z-plane display angle.Aspects of the present disclosure relate to creating a user profilehaving a multi-dimensional array. The user profile can be configured tomaintain a set of display preferences. The set of display preferencescan include a set of viewing scores and a set of z-plane display anglesfor a set of portions associated with the frustum.

Aspects of the present disclosure include analyzing, by a heuristicevaluation system, a set of usability characteristics of the frustum.The set of usability characteristics of the frustum may include avisibility feature and a current workload. In response to analyzing theset of usability characteristics, the present disclosure can includecomputing coordinates for the set of regions by utilizing the set ofusability characteristics. Further, the present disclosure can includedisplaying the set of regions according to the computed coordinates.Aspects of the present disclosure are further directed toward measuring,by a head-tracking system, a first head movement including a rotationangle with respect to a reference direction. Based on the first headmovement including the rotation angle with respect to the referencedirection, a first translation for the frustum can be determined. Thefrustum can be shifted in the display based on the first translation.

Further aspects of the present disclosure relate to providing anotherfrustum in the display. Providing another frustum can include collectingadditional optical tracking information for another first portion andanother second portion of another set of portions of another softwareapplication. The additional optical tracking information can includeanother set of viewing coordinates having another temporal feature.Based on the another set of viewing coordinates having another temporalfeature, another set of viewing scores including another first group ofviewing scores and another second group of viewing scores can bedetermined. Aspects of the present disclosure can include generatinganother frustum having another set of regions. The another set ofregions can include another first region to provide the another firstportion based on the another first group of viewing scores, and anothersecond region to provide the another second portion based on the anothersecond group of viewing scores.

Turning now to the figures, FIG. 1A is an example of a frustum 100 formanaging windows of a 3D display, according to embodiments of thepresent disclosure. FIG. 1A is directed toward a representation of afrustum similar to one that could be generated by thecomputer-implemented method described herein for managing softwareapplication windows of a 3D display. The frustum 100 can include sixfaces including a second base 102 (lying in the

XY plane), a left side 104 (lying in the YZ plane), a bottom side 106(lying in the XZ plane), a top side 108 (lying in the XZ plane), a rightside 110 (lying in the YZ plane), and a first base 112 (lying in the XYplane).

Aspects of the present disclosure, in certain embodiments, relate to amethod for generating a frustum-shaped viewing region in which toprovide portions of a software application. In certain embodiments, thefrustum 100 can be used in conjunction with a three-dimensional monitor,three-dimensional television, or other type of three-dimensionaldisplay. The frustum 100 may, in certain embodiments, be a squarefrustum (e.g., a frustum of a pyramid). In certain embodiments, thefrustum can be the frustum of a cone. Other types of frustums are alsopossible.

Consistent with various embodiments, each face of the frustum 100 can beconfigured to provide a portion of a software application. In certainembodiments, the portions may be GUI (graphical user interface) windowsor areas of GUI windows of a software application. The portions to beprovided in each face of the frustum 100 can be determined based onoptical tracking information collected from one or more users engagedwith the display. Based on the optical tracking information, theportions of the software application can be assigned a viewing scorebased on the frequency with which the user looks at a particularportion, or the duration that the gaze of the user is directed at theparticular portion. In certain embodiments, the first base 112 may be afirst region (similarly referred to herein as a primary viewing region)of the frustum 100, and be configured to display the portion or portionsof the software application that were assigned the greatest viewingscore of the set of viewing scores. The left side 104, bottom 106, top108 and right side 110 may collectively referred to as the second region(similarly referred to herein as a secondary viewing region.) In certainembodiments, when the first base 112 is used as the primary viewingregion, the second base 102 may not be used to provide a portion of asoftware application, or may be removed from view. The secondary viewingregion may be configured to display the portion or portions of thesoftware application that had viewing scores less than the highestviewing score of the set of viewing scores.

Consistent with various embodiments, the frustum 100 may have a set ofdisplay angles 114, 116, 118, and 120. As shown in FIG. 1A, displayangle α1 114 may measure the angle between the first base 112 and thebottom 106. Display angle β1 116 can measure the angle between the firstbase 112 and the left side 104. Display angle θ1 118 can measure theangle between the first base 112 and the right side 110. Display angleΦ1 120 can measure the angle between the first base 112 and the top 108.Consistent with various embodiments, each display angle 114, 116, 118,120 can be calculated based upon the viewing scores assigned to the setof portions of the software application. For example, in certainembodiments, an algorithm can be used to compute each display angle 114,116, 118, 120 using the respective viewing scores for each portion asinputs.

FIG. 1B is an example of a frustum 150 for managing windows of a 3Ddisplay, according to embodiments of the present disclosure. Aspects ofFIG. 1B are directed toward a representation of a frustum in which thesecond base 102 may be a primary viewing region of the frustum 150. Thefrustum 150 can include six faces including a second base 102 (lying inthe XY plane), a left side 104 (lying in the YZ plane), a bottom 106(lying in the XZ plane), a top 108 (lying in the XZ plane), a right side110 (lying in the YZ plane), and a first base 112 (lying in the XYplane).

In certain embodiments, the second base 102 may be a first region(similarly referred to herein as a primary viewing region) of thefrustum 150, and be configured to display the portion or portions of thesoftware application that were assigned the substantially high (e.g.,the greatest) viewing score of the set of viewing scores. The first base112, left side 104, bottom 106, top 108 and right side 110 maycollectively referred to as the second region (similarly referred toherein as a secondary viewing region.) The secondary viewing region maybe configured to display the portion or portions of the softwareapplication that had viewing scores less than the highest viewing scoreof the set of viewing scores.

Consistent with various embodiments, the frustum 150 may have a set ofdisplay angles 130, 132, 134, 136. As shown in FIG. 1B, display angle α2130 may measure the angle between the plane of the second base 102(e.g., the XY plane) and the bottom 106. Display angle β2 132 canmeasure the angle between the plane of the second base 102 (e.g., the XYplane) and the left side 104. Display angle θ2 134 can measure the anglebetween the plane of the second base 102 (e.g., the XY plane) and theright side 110. Display angle Φ2 136 can measure the angle between theplane of the second base 102 (e.g., the XY plane) and the top 108.Consistent with various embodiments, each display angle 130, 132, 134,136 can be calculated based upon the viewing scores assigned to the setof portions of the software application. For example, in certainembodiments, an algorithm can be used to compute each display angle 130,132, 134, 136.

FIG. 2 is a flowchart of a method 200 for managing a display, accordingto embodiments of the present disclosure. Aspects of FIG. 2 are directedtoward generating a frustum for managing software application windows ina three-dimensional display. The method 200 may begin at block 202 andend at block 210. Consistent with various embodiments, the method 300can include a collecting block 204, a determining block 206, and agenerating block 208.

Consistent with various embodiments, at block 204 the method 200 caninclude collecting optical tracking information. The optical trackinginformation may be collected for a set of portions of a softwareapplication. For example, the optical tracking information may becollected for a first portion and a second portion of the set ofportions. The first portion and the second portion may, as describedherein, be GUI windows or areas of a software application. The opticaltracking information can include a set of viewing coordinates having atemporal feature. Collecting the optical tracking information can beaccomplished using one or more of a variety of different methods. Forexample, collecting the optical tracking information can include using avideo-based eye tracking system, an electric potential measurementsystem, a non-contact optical system, or other type of system fortracking eye movement. Consistent with various embodiments of thepresent disclosure, collecting the optical tracking information caninclude using a video camera configured to focus on one or both eyes ofa user, and record the rotations of the eye or eyes as the user looks ata display (e.g., a computer monitor, 3D display, etc.). In certainembodiments, the video camera can include using the center of the pupiland infrared/near-infrared non-collimated light to monitor cornealreflection in the eye of the user. The vector between the center of thepupil and the corneal reflection can be used to compute the viewingcoordinates on the display at which the gaze of the user is directed.

Consistent with various embodiments, the set of viewing coordinates maybe used to identify a software application at which the user is looking.For example, the method 200 can include comparing the viewingcoordinates with the relative location of an open software applicationwindow active on the display to identify the software application. Moreparticularly, aspects of the present disclosure are directed towardidentifying a set of portions (e.g., portions of the graphical userinterface) of the software application. As an example, in certainembodiments, the software application may be a video conferencingapplication having a video display portion, a contacts portion, a textentry portion, a call settings portion, and an advanced options portion.Based on the location of the viewing coordinates, the method 200 canidentify the portions of the software application. In certainembodiments, the viewing coordinates can include a temporal feature.More particularly, the temporal feature can include a viewing frequencyor a gaze duration. The viewing frequency can indicate the number oftimes a user looks at a particular location (e.g., a particular set ofviewing coordinates) for a given time interval. The gaze duration canindicate the length of time that a user looks at a particular location.As an example, the temporal feature of the viewing coordinates mayindicate that user looks at a particular location 3 times a minute(e.g., the viewing frequency) with a duration of 6 seconds each time(e.g., the gaze duration).

Consistent with various embodiments, at block 206 the method 200 caninclude determining a set of viewing scores for the set of portions ofthe software application. In certain embodiments, determining the set ofviewing scores may be based on the set of coordinates having thetemporal feature. The set of viewing scores may generally indicate howmuch (e.g., how frequently, and for what duration) a user is looking ata particular portion of the software application. The set of viewingscores may, in certain embodiments, include a first group of viewingscores and a second group of viewing scores. Consistent with variousembodiments, determining the set of viewing scores for the set ofportions of the software application can include identifying a firstfixation of the set of viewing coordinates. The first fixation can, incertain embodiments, be an indication that a particular subset of theset of viewing coordinates is of particular relevance or importance fora given viewing session of a user. As an example the first fixation canbe a particular location (e.g., a particular set of viewing coordinates)that has a viewing frequency value greater than a viewing frequencythreshold (e.g., 5 times per 60 seconds) or a gaze duration valuegreater than a gaze duration threshold (e.g., 10 seconds each time). Incertain embodiments, the first fixation could have a viewing frequencyvalue greater than a viewing frequency threshold as well as a gazeduration value greater than a gaze duration threshold. Other ways ofidentifying the first fixation are also possible.

The method 200 can further include weighting the first fixation and theset of viewing coordinates based on the viewing frequency and the gazeduration. In certain embodiments, the viewing coordinates that haverelatively large viewing frequency values and gaze duration values canbe weighted more than those viewing coordinates with relatively lowviewing frequency values and gaze duration values. As an example, incertain embodiments, the first fixation having a viewing frequency value(e.g., 8 times per 60 seconds) greater than a viewing frequencythreshold (e.g., 5 times per 60 seconds) and a gaze duration (13 secondsper time) greater than a gaze duration threshold (e.g., 11 seconds pertime) may receive a greater weighting factor than the other viewingcoordinates. Further, the method 200 can include assigning a viewingscore to a portion of the set of portions. The viewing scores can be acumulative indication of the frequency and duration with which a userlooks at a particular location (e.g., set of viewing coordinates). Putdifferently, a first portion having a greater viewing score than asecond portion (e.g., 64 versus 39) can indicate that the first portionis viewed more (e.g., more frequently and for a longer duration) thanthe second portion. In certain embodiments, assigning the viewing scorecan be based on weighting the first fixation and the set of viewingcoordinates. For example, those viewing coordinates with greater weightcan be assigned greater viewing scores.

The viewing scores may be determined in one of a number of ways. Incertain embodiments, the method 200 can include performing one or morecluster analysis techniques on the viewing coordinates located within aparticular portion of a software application to determine the viewingscores for the particular portion. For example, the cluster analysistechniques may include hierarchical clustering, centroid-basedclustering, density-based clustering, distribution- based clustering,and the like. Accordingly, the cluster analysis technique can make useof the number of viewing coordinate points within a particular areaalong with corresponding viewing frequency and gaze duration informationto generate the viewing coordinates.

In accordance with the example discussed above, the software applicationmay be a video conferencing application having a video display portion,a contacts portion, a text entry portion, a call settings portion, andan advanced options portion. The user of the video conferencingapplication may be participating in a video conference, and may beprimarily focusing his or her gaze on the video display portion, as thevideo conference host gives a presentation. He or she may also befrequently glancing at the text entry portion, as participants in thevideo conference submit questions and comments to the host of the videoconference. He or she may look intermittently at the contacts portion tosee who else is participating in the video conference. At less frequentintervals, he or she may look at the call settings portion to adjust thevideo conference resolution or streaming quality. He or she may rarelylook at the advanced options portion. Consistent with variousembodiments, the method 200 can include collecting optical trackinginformation from the user, and determining a viewing score for eachportion of the set of portions. For example, according to the exampledescribed above, the video display portion, text entry portion, contactsportion, call settings portion, and advanced options portion may beassigned viewing scores of 85, 39, 24, 18, and 9, respectively.

Consistent with various embodiments, at block 208 the method 200 caninclude generating a frustum having a set of regions configured toprovide a set of portions of a software application. In certainembodiments, the set of portions can include a first region (e.g., aprimary viewing region) to provide the first portion based on the firstgroup of viewing scores. In certain embodiments, the set of regions caninclude a second region (e.g., a secondary viewing region) to providethe second portion based on the second group of viewing scores. Thefirst group of the set of viewing scores can, in certain embodiments, begreater than the second group of the set of viewing scores. Accordingly,the portions that are viewed more (e.g., more frequently and/or for alonger duration) can be displayed in the primary viewing region of thefrustum, and the portions that are viewed less (e.g., less frequentlyand/or for a shorter duration) can be provided in the second region ofthe frustum.

Consistent with various embodiments, the method 200 can further includecomputing, for the second portion, a z-plane display angle (similarlyreferred to herein as a display angle) based on at least one viewingscore of the second group of the set of viewing scores. The z-planedisplay angle can be an angle between one or more planes of the frustum.In certain embodiments, the z-plane display angle may be an anglebetween one or more planes extending at least partially in thez-direction (e.g., the XZ plane or the YZ plane). In certainembodiments, the display angle can be computed by an algorithm using theviewing score. In certain embodiments, the display angle can beinversely proportional to the viewing score. Put differently, greaterviewing scores can correspond to lesser display angles, while lowerviewing scores can correspond to greater display angles. Further, themethod 200 can include generating the frustum using the display angle.More specifically, the display angle can be used as the angle between aside of the frustum and the primary viewing region of the frustum (e.g.,angle 114, 116, 118, or 120 of FIG. 1A or angle 130, 132, 134, 136 ofFIG. 1B). As described herein, relatively high display angles willeffectively reduce the viewing area of a particular portion provided inthe frustum, while relatively low display angles will effectivelyincrease the viewing area of a particular portion provided in thefrustum. Accordingly, portions that are viewed more (e.g., greaterviewing frequency and longer gaze duration) will have larger viewingareas within the frustum.

Consider once again the example described above wherein the softwareapplication is a video conferencing application having a video displayportion, text entry portion, contacts portion, call settings portion,and advanced options portion with assigned viewing scores of 85, 39, 24,18, and 9, respectively. In certain embodiments, as the video displayportion has the greatest viewing score of the set of portions, it can beprovided in the primary viewing area (e.g., the first base 112 of FIG.1A, or the second base 102 of FIG. 1B). The other four portions of theset of portions can be assigned computed display angles based on theirviewing scores. For example, in certain embodiments, the text entryportion, contacts portion, call settings portion, and advanced optionsportion can be assigned display angles of 51°, 66°, 72° , and 81°.

FIG. 3A is an example viewing frustum 300 provided in a display,according to embodiments of the present disclosure. Aspects of FIG. 3Aare directed toward a viewing frustum 300 with a plurality of regionsconfigured to provide one or more portions of a software application. Asshown in FIG. 3A, the example viewing frustum 300 can include a primaryviewing area 302, a first secondary viewing area 304, a second secondaryviewing area 306, a fourth secondary viewing area 308, and a fourthsecondary viewing area 310.

Consistent with various embodiments, viewing frustum 300 is an exampleimplementation of the disclosure discussed herein. In certainembodiments, viewing frustum 300 can be provided in a 3D computermonitor 312. In certain embodiments, viewing frustum 300 can be providedvia another form of display that may or may not be configured for 3Doutput, such as a television, a tablet, a mobile device (e.g., smartphone, cell phone, etc.), or the like. As described herein, the viewingfrustum 300 can be configured to provide one or more portions of asoftware application. The one or more portions of the softwareapplication may be identified based on optical tracking informationcollected from a user.

As described herein, in certain embodiments, the viewing frustum 300 canbe configured for stereoscopic 3D display. In certain embodiments, thiscan facilitate a perception of depth for the viewing frustum 300. Forexample, the primary viewing area 302 may, in certain embodiments,appear to be a further distance away from a user looking at the computermonitor 312 than the first secondary viewing area 304, second secondaryviewing area 306, third secondary viewing area 308, and fourth secondaryviewing area 310. Accordingly, the first secondary viewing area 304,second secondary viewing area 306, third secondary viewing area 308, andfourth secondary viewing area 310 may appear to extend toward the useralong the direction of the Z-axis of coordinate axes 350 as shown inFIG. 3A. Although reference is made herein to stereoscopic 3D display,the 3D effect may be implemented by one or more of a number of 3Dtechnologies. For example, the 3D effect may be implemented via ananaglyph 3D system, a polarized 3D system, an active shutter 3D system,an autostereoscopy system, or the like. Other systems are also possible.

Consistent with various embodiments, primary viewing area 302 cancorrespond with the first base 112 of FIG. 1A. As shown in top view 330FIG. 3A, the viewing frustum 300 can include a display angle 316 and adisplay angle 318. Additionally, as shown in right side view 340 of FIG.3A, the viewing frustum can include a display angle 314, and a displayangle 320. In certain embodiments, display angle 314 can correspond withdisplay angle α1 114 of FIG. 1A, display angle 316 can correspond withdisplay angle β1 116 of FIG. 1A, display angle 318 can correspond withdisplay angle θ1 118 of FIG. 1A, and display angle 320 can correspondwith display angle Φ1 120 of FIG. 1A. In certain embodiments, referencepoint 352 of coordinate axes 350 may be the point from which displayangle 316 is measured. Origin point 352 may be located on the X axis ofcoordinate axes 350. As an example, display angle 316 may vary between0° and 90°, increasing as it approaches the Z-axis. Similarly, referencepoint 354 may be the point from which display angle 320 is measured,reference point 356 may be the point from which display angle 318 ismeasured, and reference point 358 may be the point from which displayangle 314 is measured.

In certain embodiments, varying the display angles 314, 316, 318, 320can vary the size of the area allotted for each portion of the softwareapplication. For example, the second secondary viewing area 306 maydecrease in size as the display angle 316 increases, where 0° offershigh visibility and 90° effectively removes the second secondary viewingarea 306 from view. In certain embodiments, as the display angle 316decreases, the size of the second secondary viewing area 306 mayincrease. Put differently, first secondary viewing area 304, secondsecondary viewing area 306, third secondary viewing area 308, and fourthsecondary viewing area 310 can “fold in” to decrease the size of eachsecondary viewing area, respectively (e.g., the display angle approaches90°, and “fold out” to increase the viewing area of each secondaryviewing area, respectively (e.g., the display angle approaches 0°. Otherconfigurations of the viewing frustum 300 are also contemplated.

In certain embodiments, the one or more portions of the softwareapplication to be provided in the viewing frustum 300, as well as thedisplay angles 314, 316, 318, 320 can be determined based on a viewingscore of each portion of the software application. (See FIG. 6 foradditional discussion of how the viewing scores are generated.) Consideronce again the example referenced above wherein the video displayportion, text entry portion, contacts portion, call settings portion,and advanced options portion have viewing scores of 85, 39, 24, 18, and9, respectively. As described above, the text entry portion, contactsportion, call settings portion, and advanced options portion may havebeen assigned display angles of 51°, 66°, 72°, and 81°, respectively. Asan example, in certain embodiments, the video display portion may bedisplayed in the primary viewing area 302, as it has the highest viewingscore. Each portion of the remaining portions (e.g., text entry portion,contacts portion, call settings portion, and advanced options portion)may be provided in one of the secondary viewing areas (e.g., firstsecondary viewing area 304, second secondary viewing area 306, thirdsecondary viewing area 308, and fourth secondary viewing area 310). Forexample, the call settings portion may be provided in the firstsecondary viewing area 304, the contacts portion may be provided in thesecond secondary viewing area 306, the advanced options portion may beprovided in the third secondary viewing area 308, and the text entryportion may be provided in the fourth secondary viewing area 310. Asdescribed herein, the display angles 314, 316, 318, 320 may be set basedon the determined viewing angle of each portion. For example, displayangle 314 may be set to 51° (e.g., the determined display angle of thetext entry portion), the display angle 316 may be set to 66° (e.g., thedetermined display angle of the contacts portion), the display angle 318may be set to 72° (e.g., the determined display angle of the calloptions portion), and the display angle 320 may be set to 81° (e.g.,that of the advanced options portion).

Aspects of the present disclosure, in certain embodiments, are directedtoward using a head-tracking system to provide a user with a greaterrange of view for the viewing frustum 300. In certain embodiments, thehead-tracking system can identify a head movement of a user, and alterthe field of view of the frustum 300 based on the user's head movement.Accordingly, the computer monitor 312 could appear to provide a “window”into the viewing frustum 300, such that viewing the computer monitor 312from a different angle could provide a different perspective of thefrustum 300. In certain embodiments, the head-tracking system caninclude measuring a first head movement including a rotation angle withrespect to a reference direction. The first head movement may bemeasured, for instance, by a video camera mounted atop the computermonitor 312. In certain embodiments, the user may wear a head-mountedmodule equipped with one or more reflective markers. The video cameramay, in certain embodiments, use infrared light reflected from thereflective markers to quantify the first head movement of the user. Therotation angle may, in certain embodiments, correspond to the degree ofrotation of the head of a user. The reference direction may be a staticpoint of origin from which the head movement and rotation angle aremeasured. Based on the first head movement including a rotation anglewith respect to the reference direction, a first transition may bedetermined for the frustum. The first transition, for example, may be amovement in one or more of the six degrees of freedom (e.g., translationand rotation with respect to three perpendicular axes) for a rigid bodyin three-dimensional space. Based on the first transition, the frustummay be shifted in the display.

FIG. 3B is an example viewing frustum 355 provided in a display,according to embodiments of the present disclosure. Aspects of FIG. 3Bare directed toward a viewing frustum 355 with a plurality of regionsconfigured to provide one or more portions of a software application. Asshown in FIG. 3, the example viewing frustum 355 can include a primaryviewing area 302, a first secondary viewing area 304, a second secondaryviewing area 306, a fourth secondary viewing area 308, and a fourthsecondary viewing area 310.

Consistent with various embodiments, primary viewing area 302 cancorrespond with the second base 102 of FIG. 1B. As shown in top view 360of FIG. 3B, the viewing frustum 355 can include a display angle 370 anda display angle 372. Additionally, as shown in right side view 365 ofFIG. 3B, the viewing frustum can include a display angle 374, and adisplay angle 376. In certain embodiments, display angle 370 cancorrespond with display angle β2 132 of FIG. 1B, display angle 372 cancorrespond with display angle θ2 134 of FIG. 1B, display angle 374 cancorrespond with display angle 130 α2 of FIG. 1B, and display angle 376can correspond with display angle 136 Φ2 of FIG. 1B.

In certain embodiments, varying the display angles 370, 372, 374, 376can vary the size of the area allotted for each portion of the softwareapplication. For example, the second secondary viewing area 306 maydecrease in size as the display angle 316 increases, where 0° offershigh visibility and 90° effectively removes the second secondary viewingarea 306 from view. Conversely, as the display angle 316 decreases, thesize of the second secondary viewing area 306 may increase. Putdifferently, first secondary viewing area 304, second secondary viewingarea 306, third secondary viewing area 308, and fourth secondary viewingarea 310 can “fold out” to increase the viewing area (e.g., the displayangle approaches 0°), and “fold in” to decrease the viewing area (e.g.,the display angle approaches 90°).

As described herein, in certain embodiments, the viewing frustum 355 canbe configured for stereoscopic 3D display. In certain embodiments, thiscan facilitate a perception of depth for the viewing frustum 355. Forexample, the primary viewing area 302 may, in certain embodiments,appear to be closer to a user looking at the computer monitor 312 thanthe first secondary viewing area 304, second secondary viewing area 306,third secondary viewing area 308, and fourth secondary viewing area 310.Accordingly, the first secondary viewing area 304, second secondaryviewing area 306, third secondary viewing area 308, and fourth secondaryviewing area 310 may appear to extend away from the user along thedirection of the Z-axis of coordinate axes 350 as shown in FIG. 3B.Although reference is made herein to stereoscopic 3D display, the 3Deffect may be implemented by one or more of a number of 3D technologies.For example, the 3D effect may be implemented via an anaglyph 3D system,a polarized 3D system, an active shutter 3D system, an autostereoscopysystem, or the like. Other systems are also possible.

FIG. 4 is an example viewing frustum 400 provided in a display,according to embodiments of the present disclosure. Aspects of FIG. 4are directed toward a viewing frustum 400 with a plurality of regionsconfigured to provide one or more portions of a software application. Asshown in FIG. 4, the viewing frustum 400 can include a primary viewingarea 402, a first secondary viewing area 404, and a second viewing area406. One or more portions of a software application identified based onoptical tracking information from a user may be provided in the primaryviewing area 402, the first secondary viewing area 404, and the secondsecondary viewing area 406.

Consistent with various embodiments, the viewing frustum 400 can beconfigured to be provided in a stereoscopic 3D display 408. Accordingly,the first secondary viewing area 404 and second secondary viewing area406 may appear to extend along the direction of the Z-axis of coordinateaxes 450. In certain embodiments, primary viewing area 402 maycorrespond with the first base 112 of FIG. 1A. In certain embodiments,as shown in top view 430 FIG. 4, the viewing frustum 400 can include adisplay angle 416 and a display angle 418. Additionally, as shown inright side view 440 of FIG. 3A, the viewing frustum can include adisplay angle 414, and a display angle 420. In certain embodiments,display angle 414 can correspond with display angle α1 114 of FIG. 1A,display angle 416 can correspond with display angle β1 116 of FIG. 1A,display angle 418 can correspond with display angle θ1 118 of FIG. 1A,and display angle 420 can correspond with display angle Φ1 120 of FIG.1A. In certain embodiments, reference point 452 of coordinate axes 450may be the point from which display angle 416 is measured, referencepoint 454 may be the point from which display angle 420 is measured,reference point 456 may be the point from which display angle 418 ismeasured, and reference point 458 may be the point from which displayangle 414 is measured.

Aspects of FIG. 4 are directed toward a viewing frustum 400 for whichmultiple viewing areas of the viewing frustum 400 have been reduced, andremoved (e.g., become no longer visible) from the viewing frustum 400.In certain embodiments, as described herein, the display angles 414,416, 418, 420 can be computed based on the viewing scores of a set ofportions of a software application. Accordingly, in certain embodiments,the viewing score of a particular portion of the software applicationmay have a low viewing score (e.g., 0). In such a situation, the displayangle corresponding to the particular portion of the softwareapplication may be calculated to be a value such that the particularportion may be removed from the viewing frustum. For example, as shownin FIG. 4, display angles 416 and 420 may have been determined to 90°,and are therefore no longer visible in the viewing frustum 400.

As described herein, in certain embodiments, primary viewing area 402may correspond to second base 102 of FIG. 1B. Accordingly, in such aconfiguration, the first secondary viewing area 404 and second secondaryviewing area 406 can “fold out” to increase the viewing area of eachsecondary viewing area, respectively (e.g., the display angle approaches0°), and “fold in” to decrease the viewing area of each respectivesecondary viewing area (e.g., the display angle approaches 90°).

Aspects of the present disclosure, in certain embodiments, are directedtoward a heuristic evaluation system. The heuristic evaluation systemmay, in certain embodiments, provide benefits associated with usabilitywith regard to the viewing frustum 400. In certain embodiments, aspectsof the present disclosure can include analyzing, by a heuristicevaluation system, a set of usability characteristics of the frustum.The set of usability characteristics may include a visibility featureand a current workload. The visibility feature may be configured toanalyze the size of text of a particular portion to determine whether itis an appropriate size for a user to view at its current size andlocation. For example, the visibility feature may include determiningthat, based on the size of the text of a portion provided in a region ofthe frustum 400, the region containing the text is not placed closeenough to the user. The current workload may, for instance, includeassessing the number and type of running software applications. Inresponse to analyzing the set of usability characteristics of thefrustum, coordinates for the set of regions may be computed based on theset of usability characteristics. Further, the set of regions may bedisplayed according to the computed coordinates. For example, in certainsituations, the user may be involved in a video conference. Theheuristic evaluation system may assess the type of applicationscurrently running, identify that a video conference is in progress, andplace the region of the frustum in which the video display is providedcloser to the user along the Z-axis of coordinate axes 450.

FIG. 5 is an example display including two viewing frustums, accordingto embodiments of the present disclosure. Aspects of FIG. 5 are directedtoward providing a first viewing frustum 500 a and a second viewingfrustum 500 b simultaneously in the same display 508. As shown in FIG.5, the first viewing frustum 500 a can include a primary viewing area502 a, a first secondary viewing area 504 a, a second secondary viewingarea 506 a, a third secondary viewing area 508 a, and a fourth secondaryviewing area 510 a. The second viewing frustum 500 b can include aprimary viewing area 502 b, a first secondary viewing area 504 b, asecond secondary viewing area 506 b, a third secondary viewing area 508b, and a fourth secondary viewing area 510 b.

Consistent with certain embodiments, aspects of the present disclosureare directed toward providing multiple viewing frustums simultaneouslyin the same display. Each viewing frustum may be configured to provideportions of a different software application. As described herein,providing multiple viewing frustums simultaneously in the same displaycan include collecting multiple sets of optical tracking informationfrom a user. Based on a set of viewing coordinates having a temporalfeature associated with each set of optical tracking information, a setof viewing scores can be determined for the sets of portions of eachsoftware application. Each viewing frustum (e.g., viewing frustum 500 aand 500 b) can then be generated based on the viewing score of the setof portions of the respective software application.

As an example, consider a scenario in which a user is regularlyswitching between multiple software applications, such as a web browserand a word processing application. Accordingly, aspects of the presentdisclosure are directed toward generating a viewing frustum for both theweb browser and the word processing application, and providing them inthe display 508. Such a configuration may have benefits associated withusability and efficiency. Additionally, although reference is madeherein providing two viewing frustums, this is not intended to belimiting, and configurations providing alternate numbers of frustums arealso possible.

Aspects of the present disclosure, in certain embodiments, are directedtoward creating a user profile configured to maintain a set of displaypreferences for a viewing frustum. The user profile may, in certainembodiments, include a multi-dimensional array configured to store a setof viewing scores and a set of display angles for a set of portionsassociated with the viewing frustum. As an example, FIG. 6 illustratesan example multi-dimensional array 600 including a column of viewingscores 602 and a column of calculated display angles 604. As describedherein, the display angles may be calculated by an algorithm based onthe viewing score of each portion of the set of portions, the area ofone or more portions, and the number of portions. As an example, onealgorithm that could be used to determine the display angles is given byλ=C(1/(V×A)), where λ is the display angle, C is a coefficient that mayinclude the number of portions, Vis the viewing score, and A is the areaof the portion. Although referenced herein, this algorithm is notintended to be limiting, and other algorithms and methods of computingthe display angles are also possible.

Although reference is made herein and in the figures to using a squarefrustum for the viewing frustum 400, other types of frustums are alsopossible. As an example, in certain embodiments, the viewing frustum maybe the frustum of a cone. In such a configuration, one of the bases ofthe cone frustum could be the primary viewing area 402, while the sideof the cone could be the secondary viewing area. Other types of frustumsare also possible.

FIG. 7 depicts a high-level block diagram of a computer system 700 forimplementing various embodiments. The mechanisms and apparatus of thevarious embodiments disclosed herein apply equally to any appropriatecomputing system. The major components of the computer system 700include one or more processors 702, a memory 704, a terminal interface712, a storage interface 714, an I/O (Input/Output) device interface716, and a network interface 718, all of which are communicativelycoupled, directly or indirectly, for inter-component communication via amemory bus 706, an I/O bus 708, bus interface unit 709, and an I/O businterface unit 710.

The computer system 700 may contain one or more general-purposeprogrammable central processing units (CPUs) 702A and 702B, hereingenerically referred to as the processor 702. In embodiments, thecomputer system 700 may contain multiple processors; however, in certainembodiments, the computer system 700 may alternatively be a single CPUsystem. Each processor 702 executes instructions stored in the memory704 and may include one or more levels of on-board cache.

In embodiments, the memory 704 may include a random-access semiconductormemory, storage device, or storage medium (either volatile ornon-volatile) for storing or encoding data and programs. In certainembodiments, the memory 704 represents the entire virtual memory of thecomputer system 700, and may also include the virtual memory of othercomputer systems coupled to the computer system 700 or connected via anetwork. The memory 704 can be conceptually viewed as a singlemonolithic entity, but in other embodiments the memory 704 is a morecomplex arrangement, such as a hierarchy of caches and other memorydevices. For example, memory may exist in multiple levels of caches, andthese caches may be further divided by function, so that one cache holdsinstructions while another holds non-instruction data, which is used bythe processor or processors. Memory may be further distributed andassociated with different CPUs or sets of CPUs, as is known in any ofvarious so-called non-uniform memory access (NUMA) computerarchitectures.

The memory 704 may store all or a portion of the various programs,modules and data structures for processing data transfers as discussedherein. For instance, the memory 704 can store a display managementapplication 750. In embodiments, the display management application 750may include instructions or statements that execute on the processor 702or instructions or statements that are interpreted by instructions orstatements that execute on the processor 702 to carry out the functionsas further described below. In certain embodiments, the displaymanagement application 750 is implemented in hardware via semiconductordevices, chips, logical gates, circuits, circuit cards, and/or otherphysical hardware devices in lieu of, or in addition to, aprocessor-based system. In embodiments, the display managementapplication 750 may include data in addition to instructions orstatements.

The computer system 700 may include a bus interface unit 709 to handlecommunications among the processor 702, the memory 704, a display system724, and the I/O bus interface unit 710. The I/O bus interface unit 710may be coupled with the I/O bus 708 for transferring data to and fromthe various I/O units. The I/O bus interface unit 710 communicates withmultiple I/O interface units 712, 714, 716, and 718, which are alsoknown as I/O processors (IOPs) or I/O adapters (IOAs), through the I/Obus 708. The display system 724 may include a display controller, adisplay memory, or both. The display controller may provide video,audio, or both types of data to a display device 726. The display memorymay be a dedicated memory for buffering video data. The display system724 may be coupled with a display device 726, such as a standalonedisplay screen, computer monitor, television, or a tablet or handhelddevice display. In one embodiment, the display device 726 may includeone or more speakers for rendering audio. Alternatively, one or morespeakers for rendering audio may be coupled with an I/O interface unit.In alternate embodiments, one or more of the functions provided by thedisplay system 724 may be on board an integrated circuit that alsoincludes the processor 702. In addition, one or more of the functionsprovided by the bus interface unit 709 may be on board an integratedcircuit that also includes the processor 702.

The I/O interface units support communication with a variety of storageand I/O devices. For example, the terminal interface unit 712 supportsthe attachment of one or more user I/O devices 720, which may includeuser output devices (such as a video display device, speaker, and/ortelevision set) and user input devices (such as a keyboard, mouse,keypad, touchpad, trackball, buttons, light pen, or other pointingdevice). A user may manipulate the user input devices using a userinterface, in order to provide input data and commands to the user I/Odevice 720 and the computer system 700, and may receive output data viathe user output devices. For example, a user interface may be presentedvia the user I/O device 720, such as displayed on a display device,played via a speaker, or printed via a printer.

The storage interface 714 supports the attachment of one or more diskdrives or direct access storage devices 722 (which are typicallyrotating magnetic disk drive storage devices, although they couldalternatively be other storage devices, including arrays of disk drivesconfigured to appear as a single large storage device to a hostcomputer, or solid-state drives, such as flash memory). In someembodiments, the storage device 722 may be implemented via any type ofsecondary storage device. The contents of the memory 704, or any portionthereof, may be stored to and retrieved from the storage device 722 asneeded. The I/O device interface 716 provides an interface to any ofvarious other I/O devices or devices of other types, such as printers orfax machines. The network interface 718 provides one or morecommunication paths from the computer system 700 to other digitaldevices and computer systems; these communication paths may include,e.g., one or more networks 730.

Although the computer system 700 shown in FIG. 7 illustrates aparticular bus structure providing a direct communication path among theprocessors 702, the memory 704, the bus interface 709, the displaysystem 724, and the I/O bus interface unit 710, in alternativeembodiments the computer system 700 may include different buses orcommunication paths, which may be arranged in any of various forms, suchas point-to-point links in hierarchical, star or web configurations,multiple hierarchical buses, parallel and redundant paths, or any otherappropriate type of configuration. Furthermore, while the I/O businterface unit 710 and the I/O bus 708 are shown as single respectiveunits, the computer system 700 may, in fact, contain multiple I/O businterface units 710 and/or multiple I/O buses 708. While multiple I/Ointerface units are shown, which separate the I/O bus 708 from variouscommunications paths running to the various I/O devices, in otherembodiments, some or all of the I/O devices are connected directly toone or more system I/O buses.

In various embodiments, the computer system 700 is a multi-usermainframe computer system, a single-user system, or a server computer orsimilar device that has little or no direct user interface, but receivesrequests from other computer systems (clients). In other embodiments,the computer system 700 may be implemented as a desktop computer,portable computer, laptop or notebook computer, tablet computer, pocketcomputer, telephone, smart phone, or any other suitable type ofelectronic device.

FIG. 7 depicts several major components of the computer system 700.Individual components, however, may have greater complexity thanrepresented in FIG. 7, components other than or in addition to thoseshown in FIG. 7 may be present, and the number, type, and configurationof such components may vary. Several particular examples of additionalcomplexity or additional variations are disclosed herein; these are byway of example only and are not necessarily the only such variations.The various program components illustrated in FIG. 7 may be implemented,in various embodiments, in a number of different manners, includingusing various computer applications, routines, components, programs,objects, modules, data structures, etc., which may be referred to hereinas “software,” “computer programs,” or simply “programs.”

FIG. 8 illustrates an example cone frustum 800 for managing softwareapplications of a 3D display, consistent with embodiments of the presentdisclosure. Aspects of FIG. 8 are directed toward a cone frustum thatcan be generated to manage portions of a software application in a 3Ddisplay. Consistent with various embodiments, the cone frustum 800 mayinclude a first base 802, a curved region 804, and a second base 806. Incertain embodiments, the first base 802 may be used as a primary viewingregion configured to provide one or more portions of a softwareapplication. In certain embodiments, the second base 806 may beconfigured as the primary viewing region. In certain embodiments, thecurved region 804 may be used as a secondary viewing region configuredto provide one or more portions of a software application. Otherconfigurations for the cone frustum 800, as well as other types offrustums, are also contemplated for managing software applications of a3D display.

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Java, Smalltalk, C++ or the like,and conventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The descriptions of the various embodiments of the present disclosurehave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

What is claimed is:
 1. A computer-implemented method for managing adisplay for a software application having a set of portions, the methodcomprising: collecting, for a first portion of the set of portions and asecond portion of the set of portions, optical tracking informationincluding a set of viewing coordinates having a temporal feature;determining, based on the optical tracking information including the setof viewing coordinates having the temporal feature, a set of viewingscores including a first group of viewing scores and a second group ofviewing scores; and generating a frustum having a set of regions, theset of regions including: a first region, to provide the first portion,based on the first group of viewing scores; and a second region, toprovide the second portion, based on the second group of viewing scores;wherein the temporal feature includes a viewing frequency and a gazeduration; wherein determining the set of viewing scores for the set ofportions of the software application further comprises: identifying afirst fixation of the set of viewing coordinates; weighting the firstfixation and the set of viewing coordinates based on the viewingfrequency and the gaze duration; and assigning a viewing score of theset of viewing scores to a third portion of the set of portions.
 2. Themethod of claim 1, further comprising: collecting another opticaltracking information for another first portion and another secondportion of another set of portions of another software application, theanother optical tracking information including another set of viewingcoordinates having another temporal feature; determining, based on theanother set of viewing coordinates having another temporal feature,another set of viewing scores including another first group of viewingscores and another second group of viewing scores; generating anotherfrustum having another set of regions, the another set of regionsincluding: another first region, to provide the another first portion,based on the another first group of viewing scores; and another secondregion, to provide the another second portion, based on the anothersecond group of viewing scores.
 3. The method of claim 1, furthercomprising: creating a user profile having a multi-dimensional array tomaintain a set of display preferences including a set of viewing scoresand a set of z-plane display angles for a set of portions associatedwith the frustum.
 4. The method of claim 1, wherein the frustum includesa first base and four peripheral sides, wherein the first base of thefrustum is the first region of the frustum and the four peripheral sidesare the second region of the frustum, and wherein the angle between aside of the four peripheral sides and the first base is based on az-plane display angle.